/* Copyright (c) 2009, Real-Time Innovations, Inc.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * 
 * - Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright
 *   notice, this list of conditions and the following disclaimer in the
 *   documentation and/or other materials provided with the distribution.
 * - Neither the name of Real-Time Innovations, Inc. nor the names of its
 *   contributors may be used to endorse or promote products derived from
 *   this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

package org.omg.dds.builtin;

import org.omg.dds.infrastructure.qos.DeadlineQosPolicy;
import org.omg.dds.infrastructure.qos.DestinationOrderQosPolicy;
import org.omg.dds.infrastructure.qos.DurabilityQosPolicy;
import org.omg.dds.infrastructure.qos.DurabilityServiceQosPolicy;
import org.omg.dds.infrastructure.qos.HistoryQosPolicy;
import org.omg.dds.infrastructure.qos.LatencyBudgetQosPolicy;
import org.omg.dds.infrastructure.qos.LifespanQosPolicy;
import org.omg.dds.infrastructure.qos.LivelinessQosPolicy;
import org.omg.dds.infrastructure.qos.OwnershipQosPolicy;
import org.omg.dds.infrastructure.qos.ReliabilityQosPolicy;
import org.omg.dds.infrastructure.qos.ResourceLimitsQosPolicy;
import org.omg.dds.infrastructure.qos.TopicDataQosPolicy;
import org.omg.dds.infrastructure.qos.TransportPriorityQosPolicy;
import org.omg.dds.spi.BuiltinTopicDataFactory;
import org.omg.dds.spi.ServiceImpl;
import org.omg.dds.util.ValueType;


/**
 * DDS/TopicBuiltinTopicData.java .
 * Generated by the IDL-to-Java compiler (portable), version "3.2"
 * from dds_rtf2_dcps.idl
 * Wednesday, September 16, 2009 9:06:02 AM CDT
 */
public abstract class TopicBuiltinTopicData
implements ValueType<TopicBuiltinTopicData> {
    // -----------------------------------------------------------------------
    // Constants
    // -----------------------------------------------------------------------

    private static final long serialVersionUID = -1842480678073679239L;



    // -----------------------------------------------------------------------
    // Object Lifecycle
    // -----------------------------------------------------------------------

    public static TopicBuiltinTopicData create() {
        BuiltinTopicDataFactory factory =
            ServiceImpl.getInstance().getBuiltinTopicDataFactory();
        TopicBuiltinTopicData data = factory.createTopicBuiltinTopicData();
        assert data != null;
        return data;
    }

    public static TopicBuiltinTopicData create(
            BuiltinTopicKey key,
            String name,
            String typeName,
            DurabilityQosPolicy durability,
            DurabilityServiceQosPolicy durabilityService,
            DeadlineQosPolicy deadline,
            LatencyBudgetQosPolicy latencyBudget,
            LivelinessQosPolicy liveliness,
            ReliabilityQosPolicy reliability,
            TransportPriorityQosPolicy transportPriority,
            LifespanQosPolicy lifespan,
            DestinationOrderQosPolicy destinationOrder,
            HistoryQosPolicy history,
            ResourceLimitsQosPolicy resourceLimits,
            OwnershipQosPolicy ownership,
            TopicDataQosPolicy topicDdata)
    {
        BuiltinTopicDataFactory factory =
            ServiceImpl.getInstance().getBuiltinTopicDataFactory();
        TopicBuiltinTopicData data = factory.createTopicBuiltinTopicData(
                key,
                name,
                typeName,
                durability,
                durabilityService,
                deadline,
                latencyBudget,
                liveliness,
                reliability,
                transportPriority,
                lifespan,
                destinationOrder,
                history,
                resourceLimits,
                ownership,
                topicDdata);
        assert data != null;
        return data;
    }



    // -----------------------------------------------------------------------
    // Methods
    // -----------------------------------------------------------------------

    /**
     * @param key the key to set
     */
    public abstract void setKey(BuiltinTopicKey key);

    /**
     * @return the key
     */
    public abstract BuiltinTopicKey getKey();

    /**
     * @param name the name to set
     */
    public abstract void setName(String name);

    /**
     * @return the name
     */
    public abstract String getName();

    /**
     * @param typeName the typeName to set
     */
    public abstract void setTypeName(String typeName);

    /**
     * @return the typeName
     */
    public abstract String getTypeName();

    /**
     * @param durability the durability to set
     */
    public abstract void setDurability(DurabilityQosPolicy durability);

    /**
     * @return the durability
     */
    public abstract DurabilityQosPolicy getDurability();

    /**
     * @param durabilityService the durabilityService to set
     */
    public abstract void setDurabilityService(
            DurabilityServiceQosPolicy durabilityService);

    /**
     * @return the durabilityService
     */
    public abstract DurabilityServiceQosPolicy getDurabilityService();

    /**
     * @param deadline the deadline to set
     */
    public abstract void setDeadline(DeadlineQosPolicy deadline);

    /**
     * @return the deadline
     */
    public abstract DeadlineQosPolicy getDeadline();

    /**
     * @param latencyBudget the latencyBudget to set
     */
    public abstract void setLatencyBudget(
            LatencyBudgetQosPolicy latencyBudget);

    /**
     * @return the latencyBudget
     */
    public abstract LatencyBudgetQosPolicy getLatencyBudget();

    /**
     * @param liveliness the liveliness to set
     */
    public abstract void setLiveliness(LivelinessQosPolicy liveliness);

    /**
     * @return the liveliness
     */
    public abstract LivelinessQosPolicy getLiveliness();

    /**
     * @param reliability the reliability to set
     */
    public abstract void setReliability(ReliabilityQosPolicy reliability);

    /**
     * @return the reliability
     */
    public abstract ReliabilityQosPolicy getReliability();

    /**
     * @param transportPriority the transportPriority to set
     */
    public abstract void setTransportPriority(
            TransportPriorityQosPolicy transportPriority);

    /**
     * @return the transportPriority
     */
    public abstract TransportPriorityQosPolicy getTransportPriority();

    /**
     * @param lifespan the lifespan to set
     */
    public abstract void setLifespan(LifespanQosPolicy lifespan);

    /**
     * @return the lifespan
     */
    public abstract LifespanQosPolicy getLifespan();

    /**
     * @param destinationOrder the destinationOrder to set
     */
    public abstract void setDestinationOrder(
            DestinationOrderQosPolicy destinationOrder);

    /**
     * @return the destinationOrder
     */
    public abstract DestinationOrderQosPolicy getDestinationOrder();

    /**
     * @param history the history to set
     */
    public abstract void setHistory(HistoryQosPolicy history);

    /**
     * @return the history
     */
    public abstract HistoryQosPolicy getHistory();

    /**
     * @param resourceLimits the resourceLimits to set
     */
    public abstract void setResourceLimits(
            ResourceLimitsQosPolicy resourceLimits);

    /**
     * @return the resourceLimits
     */
    public abstract ResourceLimitsQosPolicy getResourceLimits();

    /**
     * @param ownership the ownership to set
     */
    public abstract void setOwnership(OwnershipQosPolicy ownership);

    /**
     * @return the ownership
     */
    public abstract OwnershipQosPolicy getOwnership();

    /**
     * @param topicData the topicData to set
     */
    public abstract void setTopicData(TopicDataQosPolicy topicData);

    /**
     * @return the topicData
     */
    public abstract TopicDataQosPolicy getTopicData();

    @Override
    public abstract TopicBuiltinTopicData clone();

} // class TopicBuiltinTopicData
